package com.itlong.cloud.smartcard.service;


import com.itlong.cloud.POJO.DTO.smartcard.SmartCardFaceSyncDataGetPageDTO;
import com.itlong.cloud.POJO.PO.SmartCardFacePullCloudInfoPO;
import com.itlong.cloud.POJO.VO.smartcard.SmartCardFaceSyncDataPageVO;
import com.itlong.cloud.POJO.VO.smartcard.SmartCardFaceUserInfoVO;
import com.itlong.cloud.utils.page.Page;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
* <desc>
*      C#人脸识别全量同步数据处理类.
* </desc>
*
* @createDate 2018-03-18
*/
public interface ISmartCardFaceService {

    /**
     * <desc>
     *      C#人脸识别获取全量数据
     * </desc>
     *
     * @param syncDataGetPageDTO    数据传输对象
     * @return
     * @author Juguang.S
     * @createDate 2019/03/18
     */
    Page<SmartCardFaceSyncDataPageVO> pullFull(SmartCardFaceSyncDataGetPageDTO syncDataGetPageDTO) throws Exception;

    /**
     * <desc>
     *      推送用户权限信息变更消息
     * </desc>
     *
     * @param json
     * @author Juguang.S
     * @createDate 2019/03/20
     */
    void pushUserAuthChange(String json,String projectId) throws Exception;

    /**
     * <desc>
     *      根据访客人脸url获取邀请该访客创建人脸的用户ID
     * </desc>
     *
     * @param userId
     * @author Juguang.S
     * @createDate 2019/03/20
     */
    String getUserIdByVFaceId(String userId);

    /**
     * <desc>
     *      判断该电梯是否为云电梯
     * <desc/>
     * @param   elevatorDeviceUnique 电梯设备唯一码
     * @return
     * @author Juguang.S
     * @createDate 2019/03/20
     */
    Integer isCloudElevator(String elevatorDeviceUnique);

    /**
     * <desc>
     *      保存一卡通动态人脸识别同步后台数据
     * <desc/>
     * @param   deviceUniqueStr 设备唯一码，多个以逗号隔开
     * @param   status 设备启用状态 1-启用 2-禁用
     * @return
     * @author Juguang.S
     * @createDate 2019/07/02
     */
    List<Map<String, Object>> saveVisitorInfo(String deviceUniqueStr,String status,List<Map<String, Object>> auths,String projectId);

    /**
     * <desc>
     *      获取项目有批号设备的过期时间集合。
     * <desc/>
     *
     * @param projectId 项目编号
     * @return
     * @author Juguang.S
     * @createDate 2019-11-25
     */
    List<Map<String, String>> getDeviceCloudServiceCostEndTime(String projectId);


}
